/**
 * 
 *  变量声明区
 *
 */



// --------------------------- 


/**
 * 
 * 函数封装区 工具函数在这里封装
 * 
 */

// 创建日期数组的方法;
//   function createMonthArray(){
//       var monthArray = [];
//       // 创建 6 * 7 的数组;
//       // 每一周创建一个数组;
//       // 下标 0 ~ 6 分别对应周 1 到周末;
//       for(var week = 0 , date_count = 0; week < 6 ; week ++){
//             var week_array = [];
//             for(var date = 0 ; date < 7 ; date ++){
//                   date_count++
//                   week_array.push(date_count);
//             }
//             monthArray.push(week_array)
//       }

//       return monthArray;
//   }

//   function createMonthArray(){

//       var d = new Date();
//       d.setMonth(d.getMonth() + 1);
//       d.setDate(0);
//       // 一个月共有多少天;
//       var allDays = d.getDate();

//       var monthArray = [];
//       // 创建 6 * 7 的数组;
//       // 每一周创建一个数组;
//       // 下标 0 ~ 6 分别对应周 1 到周末;
//       for(var week = 0 , date_count = 0; week < 6 ; week ++){
//             var week_array = [];
//             for(var date = 0 ; date < 7 ; date ++){
//                   date_count++
//                   week_array.push(date_count);
//                   // 一旦到了结尾，日期从一号重新计数;
//                   if(allDays === date_count){
//                         date_count = 0;
//                   }
//             }
//             monthArray.push(week_array)
//       }

//       return monthArray;
//   }


function createMonthArray(month, year) {

    var d = new Date();
    year ? d.setFullYear(year) : "";
    d.setMonth(month - 1);

    d.setDate(1);
    // 因为日期对象的星期几是从0 ~ 6 的; 我们却向变成 1 ~ 7 方便使用; 
    var day = d.getDay();
    var firstDay = (day === 0 ? 7 : day);

    d.setMonth(d.getMonth() + 1);
    d.setDate(0);
    // 一个月共有多少天;
    var allDays = d.getDate();
    // 一号是周几;

    // 日期设置成上个月最后一天;
    d.setDate(0);
    var prevMonthLastDate = d.getDate();

    var monthArray = [];
    // 是否创建下个月的日期;
    var nextMonth = false;
    // 创建 6 * 7 的数组;
    // 每一周创建一个数组;
    // 下标 0 ~ 6 分别对应周 1 到周末;
    for (var week = 0, date_count = 0; week < 6; week++) {
        var week_array = [];
        for (var day = 0; day < 7; day++) {
            if (week === 0) {
                // -------------------------是第一周的日期------------
                if (day >= firstDay - 1) {
                    date_count++;
                    week_array[day] = date_count
                } else {
                    // 找到上个月的最后一天;
                    week_array.push([prevMonthLastDate - (firstDay - 2 - day)]);
                    // console.log(day , firstDay - 2 - day); 
                    // 2 1 0;
                    // 4 - 2 - day;
                }
            } else {
                // -------------------------不是第一周的日期------------
                date_count++
                nextMonth ? week_array.push([date_count]) : week_array.push(date_count);
                // 一旦到了结尾，日期从一号重新计数;
                if (allDays === date_count) {
                    date_count = 0;
                    nextMonth = true;
                }
            }
        }
        monthArray.push(week_array)
    }

    return monthArray;
}



// -----------------------------


/**
 * 
 * 业务实现   
 * 
 */


console.log(createMonthArray());

// --------------------------------